//创建vuex最为核心的store
//actions,mutitions,state都是对象
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

// 把一些额外的请求都写到actions里面
//actions里面如果逻辑比较复杂可以调用dispatch调用下一个actions继续处理逻辑
const actions = {
  // add(context, value) {
  //   console.log(context, value);
  //   context.commit('ADD', value);
  // },
  // reduce(context, value) {
  //   context.commit('REDUCE', value);
  // },
  addOdd(context, value) {
    if (context.state.sum % 2) {
      context.commit('ADDODD', value);
    }
  },
  addWait(context, value) {
    setTimeout(() => {
      context.commit('ADDWAIT', value);
    }, 500);
  },
};
// mutations里面只写执行的操作,不做其他额外的事情
const mutations = {
  ADD(state, value) {
    // console.log(store, value);
    state.sum += value;
  },
  REDUCE(state, value) {
    // console.log(store, value);
    state.sum -= value;
  },
  ADDODD(state, value) {
    state.sum += value;
  },
  ADDWAIT(state, value) {
    state.sum += value;
  },
};
// state相当于是数据源
const state = {
  sum: 0,
  school: '尚硅谷',
  subject: '前端',
};

// 跟计算属性很类似
const getters = {
  bigSum(state) {
    return state.sum * 10;
  },
};
export default new Vuex.Store({
  actions,
  mutations,
  state,
  getters,
});
